package com.zhijian.medical.entity.po;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * 实验流程-样本管理
 *
 * @author Auto Generator
 * @date 2022-08-19 13:54:50
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Api(tags = "实验流程-样本管理")
public class ExperimentProcessSample {
    /**
     * 主键id
     */
    @ApiModelProperty("主键id")
    private Long id;

    /**
     * 分子病理号
     */
    @ApiModelProperty("分子病理号")
    @NotBlank(message = "分子病理号不能为空")
    private String moleculePathologyNumber;

    /**
     * 常规病理号
     */
    @ApiModelProperty("常规病理号")
    private String conventionPathologyNumber;

    /**
     * 多个检测项目，1：KRAS/NRAS突变检测，2：BRAF突变检测
     */
    @ApiModelProperty("多个检测项目，1：KRAS/NRAS突变检测，2：BRAF突变检测")
    private String project;

    /**
     * 样本类型，0：蜡块，1：白片，2：外周血，3：骨髓，4：尿液，5：胸腹水，6：粪便，7：宫颈脱落细胞
     */
    @ApiModelProperty("样本类型，0：蜡块，1：白片，2：外周血，3：骨髓，4：尿液，5：胸腹水，6：粪便，7：宫颈脱落细胞")
    private String type;

    /**
     * 接收人员
     */
    @ApiModelProperty("接收人员")
    private String receiveUser;

    /**
     * 送检医院
     */
    @ApiModelProperty("送检医院")
    private String hospital;

    /**
     * 实验流程id
     */
    @ApiModelProperty("实验流程id")
    private Long experimentProcessId;

    /**
     * 状态，0：待检测，1：检测中，2：已检测
     */
    @ApiModelProperty("状态，0：待检测，1：检测中，2：已检测")
    private Byte status;

    /**
     * 肿瘤细胞比例
     */
    @ApiModelProperty("肿瘤细胞比例")
    private String zlxbbl;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String note;

    /**
     * 是否合格，0：合格，1：不合格
     */
    @ApiModelProperty("是否合格，0：合格，1：不合格")
    private Byte weatherQualified;

    /**
     * 不合格原因
     */
    @ApiModelProperty("不合格原因")
    private String unqualifiedReason;

    /**
     * 关联类型
     */
    @ApiModelProperty("关联类型")
    private Byte relationType;

    /**
     * 关联id
     */
    @ApiModelProperty("关联id")
    private String relationId;

    /**
     * 姓名
     */
    @ApiModelProperty("姓名")
    @NotBlank(message = "姓名不能为空")
    private String name;

    /**
     * 性别，0：男，1：女
     */
    @ApiModelProperty("性别，0：男，1：女")
    @NotNull(message = "性别不能为空")
    private Byte sex;

    /**
     * 年龄
     */
    @ApiModelProperty("年龄")
    @NotNull(message = "性别不能为空")
    private Integer age;

    /**
     * 收到日期，格式'2022-01-01 11:11'
     */
    @ApiModelProperty("收到日期，格式'2022-01-01 11:11'")
    private Date receiveDate;

    /**
     * 病区
     */
    @ApiModelProperty("病区")
    private String infectedPatch;

    /**
     * 科别
     */
    @ApiModelProperty("科别")
    private String kb;

    /**
     * 送检医生
     */
    @ApiModelProperty("送检医生")
    private String doctor;

    /**
     * 门诊号
     */
    @ApiModelProperty("门诊号")
    private String mzh;

    /**
     * 床号
     */
    @ApiModelProperty("床号")
    private String ch;

    /**
     * 住院号
     */
    @ApiModelProperty("住院号")
    private String zyh;

    /**
     * 实验内不合格原因
     */
    @ApiModelProperty("实验内不合格原因")
    private String inUnqualifiedReason;

    /**
     * 病史摘要
     */
    @ApiModelProperty("病史摘要")
    private String bszy;

    /**
     * 组织学病理诊断
     */
    @ApiModelProperty("组织学病理诊断")
    private String zzxblzd;

    /**
     * 取材明细
     */
    @ApiModelProperty("取材明细")
    private String qcmx;

    /**
     * 检验报告
     */
    @ApiModelProperty("检验报告")
    private String jybg;

    /**
     * 影像报告
     */
    @ApiModelProperty("影像报告")
    private String yxbg;

    /**
     * 总实验类型
     */
    @ApiModelProperty("总实验类型")
    @NotNull(message = "实验类型不能为空")
    private Byte mainType;

    /**
     * 浓度ng/ul
     */
    @ApiModelProperty("浓度ng/ul")
    private String nd;

    /**
     * OD260/280
     */
    @ApiModelProperty("OD260/280")
    private BigDecimal od260280;

    /**
     * OD260/230
     */
    @ApiModelProperty("OD260/230")
    private BigDecimal od260230;

    /**
     * 样本准备记录id
     */
    @ApiModelProperty("样本准备记录id")
    private Long readyId;

    /**
     * 核酸提取id
     */
    @ApiModelProperty("核酸提取id")
    private Long htstqId;

    /**
     * 稀释方式
     */
    @ApiModelProperty("稀释方式")
    private String xlfs;

    /**
     * 不符合要求样本处理方式
     */
    @ApiModelProperty("不符合要求样本处理方式")
    private String bfhyqybclfs;

    /**
     * 原数据id
     */
    @ApiModelProperty("原数据id")
    private Long fromId;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 修改时间
     */
    @ApiModelProperty("修改时间")
    private Date updateTime;

    /**
     * 重写equals方法，只要id一样就认定是一个对象
     *
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        ExperimentProcessSample g = (ExperimentProcessSample) obj;
        return Objects.equals(this.getId(), g.getId());
    }

    @Override
    public int hashCode() {
        return this.getId().hashCode();
    }
}